// #include<iostream>
// #include<assert.h>
// #include<cstring>
// using namespace std;
// //实现一个支持增删查改的string
// namespace zhc
// {
//     class string
//     {
//         // friend ostream& operator<<(ostream& out,const string& s);
//         // friend istream& operator>>(istream& in,string& s);
//         public:
//         typedef char* iterator;
//         iterator begin();
//         iterator end();
//         string(const char* str = "");
//         ~string();
//         string(const string& s);
//         string& operator=(const string& s);

//         size_t size()const;
//         size_t capacity()const;
//         //不涉及修改变量最好加上const，这样的话，const和非const都可以调用
        
//         char& operator[](size_t pos);
//         const char& operator[](size_t pos) const;


//         void push_back(char ch);//插入一个字符
//         void reserve(int n);
//         void append(const char* str);//插入多个字符
         
//         //+=可以插入字符也可以加入字符串
//         string& operator+=(char ch);
//         string& operator+=(const char* str);

//         string insert(size_t pos,char ch);
//         string& insert(size_t pos,const char* str);

//         string& erase(size_t pos,size_t len = npos);

//         size_t find(char ch,size_t pos = 0);
//         size_t find(const char* str,size_t pos = 0);//理解

//         bool operator<(const string& s);
//         bool operator==(const string& s);
//         bool operator<=(const string& s);
//         bool operator>(const string& s);
//         bool operator>=(const string& s);
//         bool operator!=(const string& s);


//         private:
//         char* _str;
//         size_t _size;       //已经有了多少个有效字符
//         size_t _capacity;   //能存多少个有效字符 '\0'不是有效字符
//         static int npos;
//     };
//     int string::npos = -1;

//     //重载输入和输出
//     //在类中左操作数：string * const this
//     ostream& operator<<(ostream& out,const string& s);

//     //istream& operator>>(istream& in,const string s);
//     //这里不能加上const 
//     istream& operator>>(istream& in, string s);
    

// }
